home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PRUS101 / FSTR.DOK < prev    next >
Text File  |  1994-12-08  |  45KB  |  1,003 lines

  1.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  2.                        Dokumentation zur FIDO Unit FSTR
  3.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  4.  
  5.                                  RELEASE 1.06
  6.                                  ^^^^^^^^^^^^
  7.  
  8.   =========================================================================
  9.    Autor: Peter Holschbach, 2:2450/660.3 @ FidoNet, Remscheid,  29.06.1994
  10.   =========================================================================
  11.  
  12.      1. Strings:
  13.      -----------
  14.  
  15.         Die Unit FSTR.PAS stellt Funktionen und Prozeduren zur Manipu-
  16.         lation und Bearbeitung von Variablen der Typen CHAR und STRING
  17.         zur Verfuegung.
  18.  
  19.         Dies ist eine Low Level Unit.  Sie benoetigt keinerlei Routinen
  20.         anderer  Units,  mit  Ausnahme  der in Turbo Pascals (6.0 oder
  21.         hoeher) Unit-Library TURBO.TPL enhaltenen Standard-Units.
  22.  
  23.  
  24.  
  25.      2. Kurzbeschreibung:
  26.      --------------------
  27.  
  28.         CharListPos .......... liefert   die    Position    des  ersten
  29.                                Vorkommens  eines,  in  einer als String
  30.                                uebergebenen Liste enthaltenen  Chars  in
  31.                                einem String als Word zurueck
  32.         CharListNoPos ........ liefert   die    Position    des  ersten
  33.                                Vorkommens eines,  in  einer  als String
  34.                                uebergebenen  Liste  _nicht_  enthaltenen
  35.                                Chars in einem String als Word zurueck
  36.         EscToString .......... wandelt eine Zeichenkette mit Steuerzeichen
  37.                                in eine 'lesbare' Zeichenkette mit ASCII
  38.                                um.
  39.         EnsureBackslash ...... stellt   sicher,   dass  ein  String  mit
  40.                                einem '\' endet
  41.         EnsureNoBackslash .... stellt  sicher,  dass  ein String _nicht_
  42.                                mit einem '\' endet
  43.         FieldOfStrings ....... Typendefinition   fuer     den   internen
  44.                                Gebrauch
  45.         LastPos .............. ermittelt die letzte Startposition einer
  46.                                Zeichenfolge innerhalb  einer  Variablen
  47.                                des Typs STRING
  48.         LowerString .......... konvertiert  eine   Variable  des   Typs
  49.                                STRING zu Kleinschreibung (erlaubt  auch
  50.                                die  Uebergabe  von  Variablen  des  Typs
  51.                                CHAR)
  52.         MirrorString ......... spiegelt  einen  String  an  der eigenen
  53.                                Achse
  54.         PartString ........... teilt einen String, ausgehend von  einer
  55.                                als String uebergebenen  Liste von Trenn-
  56.                                zeichen, in Teilstrings auf
  57.         PartStringByComma .... teilt  einen String, ausgehend von dem
  58.                                Trennzeichen ',',  in Teilstrings auf
  59.         PartStringBySpaceTAB . teilt  einen  String,  ausgehend von den
  60.                                Trennzeichen ' '  und #9, in Teilstrings
  61.                                auf
  62.         PosCount ............. ermittelt die Haeufigkeit,  mit der  eine
  63.                                Zeichenfolge  innerhalb  einer Variablen
  64.                                des Typs STRING vorkommt
  65.         PosX ................. liefert   die    Position    des   Xten
  66.                                Vorkommens  eines  Substrings innerhalb
  67.                                eines Strings als Byte zurueck
  68.         RedPosCount .......... ermittelt die _redundante_  Haeufigkeit,
  69.                                mit  der  eine  Zeichenfolge  innerhalb
  70.                                einer   Variablen    des   Typs  STRING
  71.                                vorkommt
  72.         RemoveAll ............ entfernt alle in einer uebergebenen Liste
  73.                                enthaltenen  Chars  komplett  aus  einem
  74.                                String
  75.         RemoveLeft ........... entfernt   alle  in    einer uebergebenen
  76.                                Liste enthaltenen Chars links  aus einem
  77.                                String
  78.         RemoveLeftRight ...... entfernt  alle  in   einer   uebergebenen
  79.                                Liste  enthaltenen  Chars  links   _und_
  80.                                rechts aus einem String
  81.         RemoveRight .......... entfernt alle in einer uebergebenen Liste
  82.                                enthaltenen  Chars   rechts   aus  einem
  83.                                String
  84.         Resemble ............. liefert  einen  Wert zurueck, der angibt,
  85.                                wie sehr sich zwei Strings aehneln
  86.         StringToEsc .......... wandelt eine Zeichenkette, die
  87.                                Steuerzeichen in lesbarer Form enthält,
  88.                                in eine Zeichenkette mit Steuerzeichen
  89.                                um.
  90.         StripLeadingSpaceTAB . entfernt  alle fuehrenden Leerzeichen und
  91.                                TABs aus einem String
  92.         StripSpaceTAB ........ entfernt _alle_ Leerzeichen und TABs aus
  93.                                einem String
  94.         UpperString .......... konvertiert  eine   Variable   des  Typs
  95.                                STRING zu Grossschreibung  (erlaubt  auch
  96.                                die  Uebergabe  von  Variablen  des  Typs
  97.                                CHAR)
  98.         WildMatch ............ ueberprueft,  ob  ein  beliebige WildCards
  99.                                '?'  und  '*'  enthaltender  String  mit
  100.                                einem  als zweitem Parameter uebergebenem
  101.                                String uebereinstimmt
  102.  
  103.  
  104.  
  105.      3. Detaillierte Beschreibung:
  106.      -----------------------------
  107.  
  108.         ===============================================================
  109.         CharListPos
  110.         ---------------------------------------------------------------
  111.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  112.  
  113.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  18.06.1994
  114.  
  115.         MODIFIKATION ...  Orazio Czerwenka
  116.         ---------------------------------------------------------------
  117.  
  118.         BESCHREIBUNG ...  liefert  die  Position des ersten  Vorkommens
  119.                           eines, in einer als String  uebergebenen Liste
  120.                           enthaltenen  Chars  in  einem String als Word
  121.                           zurueck
  122.  
  123.         DEKLARATION  ...  function CharListPos
  124.                             (findlst,strName: String) : Word;
  125.  
  126.         PARAMETER    ...  findlst - die Liste der gueltigen Chars
  127.                           strName - der zu durchsuchende String
  128.  
  129.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die Position
  130.                           des ersten Vorkommens eines in der Liste  der
  131.                           gueltigen Chars enthaltenen Chars  in  strName
  132.                           zurueckliefert
  133.  
  134.  
  135.         ===============================================================
  136.         CharListNoPos
  137.         ---------------------------------------------------------------
  138.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  139.  
  140.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  18.06.1994
  141.  
  142.         MODIFIKATION ...  Orazio Czerwenka
  143.         ---------------------------------------------------------------
  144.  
  145.         BESCHREIBUNG ...  liefert  die  Position des ersten  Vorkommens
  146.                           eines, in einer als String  uebergebenen Liste
  147.                           nicht  enthaltenen  Chars in einem String als
  148.                           Word zurueck
  149.  
  150.         DEKLARATION  ...  function CharListNoPos
  151.                             (findlst,strName: String) : Word;
  152.  
  153.         PARAMETER    ...  findlst - die Liste der ungueltigen Chars
  154.                           strName - der zu durchsuchende String
  155.  
  156.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die Position
  157.                           des ersten Vorkommens eines in der Liste  der
  158.                           gueltigen  Chars  nicht  enthaltenen  Chars in
  159.                           strName zurueckliefert
  160.  
  161.  
  162.         ===============================================================
  163.         EscToString
  164.         ---------------------------------------------------------------
  165.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  166.  
  167.         ERSTDATUM    ...  24.10.1994    LETZTE AeNDERUNG ...
  168.  
  169.         MODIFIKATION ...
  170.         ---------------------------------------------------------------
  171.  
  172.         BESCHREIBUNG ...  Eine Zeichenkette die Steuerzeichen
  173.                           enthält (z.B. Escape = #27) wird in eine
  174.                           lesbare Form gebracht die auf dem Bildschirm
  175.                           darstellbar ist. Hierfür werden alle
  176.                           Zeichen die einen ASCII-Wert unterhalb von
  177.                           20h haben als ASCII-WERT + 64 dargestellt und
  178.                           durch ein führendes '^' gekennzeichnet.
  179.                           Bsp.: #27 -> '^['    ( da 27+64 = 91 = '[')
  180.                           Sollte in der Zeichenkette ein '^' enthalten
  181.                           sein, so wird es durch '^^' gekennzeichnet.
  182.                           Dies Funktion kann z.B. gebutzt werden um
  183.                           die Steuerzeichen eines Druckers lesbar
  184.                           zu machen.
  185.  
  186.  
  187.         DEKLARATION  ... Function  EscToString (strName:String) : String;
  188.  
  189.         PARAMETER    ...  strName - der String der gewandelt werden soll
  190.  
  191.         ERGEBNIS     ...  ein String mit Steuerzeichen im ASCII Format
  192.  
  193.         ===============================================================
  194.         EnsureBackslash
  195.         ---------------------------------------------------------------
  196.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  197.  
  198.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  17.06.1994
  199.  
  200.         MODIFIKATION ...  Orazio Czerwenka
  201.         ---------------------------------------------------------------
  202.  
  203.         BESCHREIBUNG ...  stellt sicher, dass ein String auf '\' endet
  204.  
  205.         DEKLARATION  ...  function EnsureBackslash
  206.                             (strName: String) : String;
  207.  
  208.         PARAMETER    ...  strName - der zu pruefende String
  209.  
  210.         ERGEBNIS     ...  ein String der auf '\' endet
  211.  
  212.  
  213.         ===============================================================
  214.         EnsureNoBackslash
  215.         ---------------------------------------------------------------
  216.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  217.  
  218.         ERSTDATUM    ...  17.06.1994    LETZTE AeNDERUNG ...  17.06.1994
  219.  
  220.         MODIFIKATION ...  Orazio Czerwenka
  221.         ---------------------------------------------------------------
  222.  
  223.         BESCHREIBUNG ...  stellt  sicher,  dass ein String nicht auf '\'
  224.                           endet
  225.  
  226.         USES         ...  RemoveRight
  227.  
  228.         DEKLARATION  ...  function EnsureNoBackslash
  229.                             (strName: String) : String;
  230.  
  231.         PARAMETER    ...  strName - der zu pruefende String
  232.  
  233.         ERGEBNIS     ...  ein String der nicht auf '\' endet
  234.  
  235.  
  236.         ===============================================================
  237.         FieldOfStrings
  238.         ---------------------------------------------------------------
  239.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  240.  
  241.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  18.06.1994
  242.  
  243.         MODIFIKATION ...  Orazio Czerwenka
  244.         ---------------------------------------------------------------
  245.  
  246.         BESCHREIBUNG ...  Typendaklaration zum  internen  Gebrauch  fuer
  247.                           PartString
  248.  
  249.         DEKLARATION  ...  type
  250.                             FieldOfStrings = Array [0..20]  of String;
  251.  
  252.  
  253.         ===============================================================
  254.         LastPos
  255.         ---------------------------------------------------------------
  256.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  257.  
  258.         ERSTDATUM    ...  18.12.1993    LETZTE AeNDERUNG ...  21.12.1993
  259.         ---------------------------------------------------------------
  260.  
  261.         BESCHREIBUNG ...  liefert die letzte StartPosition eines Sub-
  262.                           Strings oder -Chars innerhalb eines Strings
  263.                           zurueck
  264.  
  265.         USES         ...  MirrorString
  266.  
  267.         DEKLARATION  ...  function LastPos (findstr, strName: String): Byte
  268.  
  269.         PARAMETER    ...  findstr - der zu suchende SubString
  270.                           strName - der zu durchsuchende String
  271.  
  272.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die letzte
  273.                           Startposition von 'findstr' innerhalb von
  274.                           'strName' enthaelt
  275.  
  276.  
  277.         ===============================================================
  278.         LowerString
  279.         ---------------------------------------------------------------
  280.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  281.  
  282.         ERSTDATUM    ...  ??.??.1992    LETZTE AeNDERUNG ...  21.12.1993
  283.         ---------------------------------------------------------------
  284.  
  285.         BESCHREIBUNG ...  konvertiert eine Variable des Typs STRING zu
  286.                           Kleinschreibung (erlaubt auch die Uebergabe von
  287.                           Variablen des Typs CHAR)
  288.  
  289.         DEKLARATION  ...  function LowerString (strName:string):String
  290.  
  291.         PARAMETER    ...  strName - der zu konvertierende String
  292.  
  293.         ERGEBNIS     ...  eine Variable des Typs STRING, bestehend aus
  294.                           Kleinbuchstaben
  295.  
  296.  
  297.         ===============================================================
  298.         MirrorString
  299.         ---------------------------------------------------------------
  300.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  301.  
  302.         ERSTDATUM    ...  18.12.1993    LETZTE AeNDERUNG ...  16.06.1994
  303.         ---------------------------------------------------------------
  304.  
  305.         BESCHREIBUNG ...  spiegelt eine Variable des Typs STRING an der
  306.                           eigenen Achse
  307.  
  308.         DEKLARATION  ...  function MirrorString(strName: String):String
  309.  
  310.         PARAMETER    ...  strName - der zu konvertierende String
  311.  
  312.         ERGEBNIS     ...  eine Variable des Typs STRING, die den Inhalt
  313.                           von 'strName' _spiegelverkehrt_ enthaelt
  314.  
  315.  
  316.         ===============================================================
  317.         PartString
  318.         ---------------------------------------------------------------
  319.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  320.  
  321.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  28.06.1994
  322.  
  323.         MODIFIKATION ...  Peter Holschbach
  324.         ---------------------------------------------------------------
  325.  
  326.         BESCHREIBUNG ...  teilt  einen  String, ausgehend von einer als
  327.                           String uebergebenen Liste von Trennzeichen, in
  328.                           Teilstrings auf. Ausgenommen alle Zeichen die
  329.                           mit "" umschlossen sind.
  330.  
  331.         USES         ...  CharListPos, CharListNoPos
  332.  
  333.         DEKLARATION  ...  procedure PartString
  334.                             (PartBy:String;Var StringField:FieldOfStrings);
  335.  
  336.         PARAMETER    ...  PartBy      - die als String uebergebene Liste
  337.                                         der gueltigen Trennzeichen
  338.                           StringField - ein Array [0..20] of String;
  339.                                         der zu teilende String wird vor
  340.                                         Aufruf   von    PartString   in
  341.                                         StringField[0] abgelegt, wo  er
  342.                                         nicht veraendert wird
  343.  
  344.         ERGEBNIS     ...  die TeilStrings werden in den  Feldern  1..20
  345.                           der Variablen StringField abgelegt und koennen
  346.                           dort abgefragt werden. Die Anzahl der Teilstrings
  347.                           wird in PartCount abgelegt.
  348.  
  349.         ===============================================================
  350.         PartStringByComma
  351.         ---------------------------------------------------------------
  352.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  353.  
  354.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  18.06.1994
  355.  
  356.         MODIFIKATION ...  Orazio Czerwenka
  357.         ---------------------------------------------------------------
  358.  
  359.         BESCHREIBUNG ...  teilt  einen  String, ausgehend  von ','  als
  360.                           Trennzeichen, in Teilstrings auf
  361.  
  362.         USES         ...  CharListPos, CharListNoPos, PartString
  363.  
  364.         DEKLARATION  ...  procedure PartStringByComma
  365.                             (Var StringField : FieldOfStrings);
  366.  
  367.         PARAMETER    ...  StringField - ein Array [0..20] of String;
  368.                                         der zu teilende String wird vor
  369.                                         Aufruf   von    PartString   in
  370.                                         StringField[0] abgelegt, wo  er
  371.                                         nicht veraendert wird
  372.  
  373.         ERGEBNIS     ...  die TeilStrings werden in den  Feldern  1..20
  374.                           der Variablen StringField abgelegt und koennen
  375.                           dort abgefragt werden
  376.  
  377.  
  378.         ===============================================================
  379.         PartStringBySpaceTAB
  380.         ---------------------------------------------------------------
  381.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  382.  
  383.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  18.06.1994
  384.  
  385.         MODIFIKATION ...  Orazio Czerwenka
  386.         ---------------------------------------------------------------
  387.  
  388.         BESCHREIBUNG ...  teilt einen String, ausgehend  von ','#9  als
  389.                           Trennzeichen, in Teilstrings auf
  390.  
  391.         USES         ...  CharListPos, CharListNoPos, PartString
  392.  
  393.         DEKLARATION  ...  procedure PartStringBySpaceTAB
  394.                             (Var StringField : FieldOfStrings);
  395.  
  396.         PARAMETER    ...  StringField - ein Array [0..20] of String;
  397.                                         der zu teilende String wird vor
  398.                                         Aufruf   von    PartString   in
  399.                                         StringField[0] abgelegt, wo  er
  400.                                         nicht veraendert wird
  401.  
  402.         ERGEBNIS     ...  die TeilStrings werden in den  Feldern  1..20
  403.                           der Variablen StringField abgelegt und koennen
  404.                           dort abgefragt werden
  405.  
  406.  
  407.         ===============================================================
  408.         PosCount
  409.         ---------------------------------------------------------------
  410.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  411.  
  412.         ERSTDATUM    ...  21.12.1993    LETZTE AeNDERUNG ...  21.12.1993
  413.         ---------------------------------------------------------------
  414.  
  415.         BESCHREIBUNG ...  liefert die Haeufigkeit zurueck, mit der ein
  416.                           SubString oder -Char innerhalb eines Strings
  417.                           vorkommt
  418.  
  419.         DEKLARATION  ...  function PosCount (findstr, strName : String): Byte
  420.  
  421.         PARAMETER    ...  findstr - der zu suchende SubString
  422.                           strName - der zu durchsuchende String
  423.  
  424.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die Haeufigkeit
  425.                           von 'findstr' innerhalb von 'strName' zurueck-
  426.                           liefert
  427.  
  428.  
  429.         ===============================================================
  430.         PosX
  431.         ---------------------------------------------------------------
  432.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  433.  
  434.         ERSTDATUM    ...  09.06.1994    LETZTE AeNDERUNG ...  09.06.1994
  435.         ---------------------------------------------------------------
  436.  
  437.         BESCHREIBUNG ...  liefert  die  Position  des  Xten  Vorkommens
  438.                           eines Substrings innerhalb eines Strings  als
  439.                           Byte zurueck
  440.  
  441.         DEKLARATION  ...  function PosX
  442.                           (Xpos: byte; findstr, strName: String): Byte;
  443.  
  444.         PARAMETER    ...  Xpos    - das Xte zu findende Vorkommen
  445.                           findstr - der zu suchende SubString
  446.                           strName - der zu durchsuchende String
  447.  
  448.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die Position
  449.                           des Xten Vorkommens  von  'findstr' innerhalb
  450.                           des Strings 'strName' zurueckliefert
  451.  
  452.  
  453.         ===============================================================
  454.         RedPosCount
  455.         ---------------------------------------------------------------
  456.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  457.  
  458.         ERSTDATUM    ...  18.12.1993    LETZTE AeNDERUNG ...  21.12.1993
  459.         ---------------------------------------------------------------
  460.  
  461.         BESCHREIBUNG ...  liefert die _redundante_ Haeufigkeit zurueck,
  462.                           mit der ein SubString oder -Char innerhalb
  463.                           eines Strings vorkommt
  464.  
  465.         DEKLARATION  ...  function RedPosCount(findstr,strName:String):Byte
  466.  
  467.         PARAMETER    ...  findstr - der zu suchende SubString
  468.                           strName - der zu durchsuchende String
  469.  
  470.         ERGEBNIS     ...  eine Variable des Typs BYTE, die die _redundante_
  471.                           Haeufigkeit von 'findstr' innerhalb von 'strName'
  472.                           zurueckliefert
  473.  
  474.  
  475.         ===============================================================
  476.         RemoveAll
  477.         ---------------------------------------------------------------
  478.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  479.  
  480.         ERSTDATUM    ...  02.06.1994    LETZTE AeNDERUNG ...  17.06.1994
  481.         ---------------------------------------------------------------
  482.  
  483.         BESCHREIBUNG ...  entfernt  alle  in  einer  Liste  uebergebenen
  484.                           Chars innerhalb eines Strings
  485.  
  486.         DEKLARATION  ...  function RemoveAll(remo,strName:String):String;
  487.  
  488.         PARAMETER    ...  remo    - Liste der zu entfernenden Chars
  489.                           strName - der zu bearbeitende String
  490.  
  491.         ERGEBNIS     ...  ein String der die in remo  enthaltenen Chars
  492.                           nicht mehr enthaelt
  493.  
  494.  
  495.         ===============================================================
  496.         RemoveLeft
  497.         ---------------------------------------------------------------
  498.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  499.  
  500.         ERSTDATUM    ...  02.06.1994    LETZTE AeNDERUNG ...  16.06.1994
  501.         ---------------------------------------------------------------
  502.  
  503.         BESCHREIBUNG ...  entfernt  alle  in  einer  Liste  uebergebenen
  504.                           Chars links eines zu erhaltenden Strings
  505.  
  506.         DEKLARATION  ...  function RemoveLeft(remo,strName:String):String;
  507.  
  508.         PARAMETER    ...  remo    - Liste der zu entfernenden Chars
  509.                           strName - der zu bearbeitende String
  510.  
  511.         ERGEBNIS     ...  ein String der die in remo  enthaltenen Chars
  512.                           nicht mehr fuehrend enthaelt
  513.  
  514.  
  515.         ===============================================================
  516.         RemoveLeftRight
  517.         ---------------------------------------------------------------
  518.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  519.  
  520.         ERSTDATUM    ...  16.06.1994    LETZTE AeNDERUNG ...  16.06.1994
  521.         ---------------------------------------------------------------
  522.  
  523.         BESCHREIBUNG ...  entfernt  alle  in  einer  Liste  uebergebenen
  524.                           Chars  links  und rechts eines zu erhaltenden
  525.                           Strings
  526.  
  527.         USES         ...  MirrorString, RemoveLeft
  528.  
  529.         DEKLARATION  ...  function RemoveLeftRight
  530.                             (remo,strName:String):String;
  531.  
  532.         PARAMETER    ...  remo    - Liste der zu entfernenden Chars
  533.                           strName - der zu bearbeitende String
  534.  
  535.         ERGEBNIS     ...  ein String der die in remo  enthaltenen Chars
  536.                           nicht mehr fuehrend und endend enthaelt
  537.  
  538.  
  539.         ===============================================================
  540.         RemoveRight
  541.         ---------------------------------------------------------------
  542.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  543.  
  544.         ERSTDATUM    ...  02.06.1994    LETZTE AeNDERUNG ...  16.06.1994
  545.         ---------------------------------------------------------------
  546.  
  547.         BESCHREIBUNG ...  entfernt  alle  in  einer  Liste  uebergebenen
  548.                           Chars rechts eines zu erhaltenden Strings
  549.  
  550.         USES         ...  MirrorString, RemoveLeft
  551.  
  552.         DEKLARATION  ...  function RemoveRight(remo,strName:String):String;
  553.  
  554.         PARAMETER    ...  remo    - Liste der zu entfernenden Chars
  555.                           strName - der zu bearbeitende String
  556.  
  557.  
  558.         ===============================================================
  559.         Resemble
  560.         ---------------------------------------------------------------
  561.         ERSTAUTOR    ...  Peter Schuette, 2:2450/117.19 @ FidoNet
  562.  
  563.         ERSTDATUM    ...  ??.??.19??    LETZTE AeNDERUNG ...  16.06.1994
  564.  
  565.         MODIFIKATION ...  Orazio Czerwenka
  566.         ---------------------------------------------------------------
  567.  
  568.         BESCHREIBUNG ...  liefert einen  Wert  zurueck,  der angibt, wie
  569.                           sehr sich zwei Strings aehneln
  570.  
  571.         DEKLARATION  ...  function Resemble(a, b: String): Byte;
  572.  
  573.         PARAMETER    ...  a,b - die zu vergleichenden Strings
  574.  
  575.         ERGEBNIS     ...  eine Variable des Typs Byte, die die Aehnlich-
  576.                           keit zweier Strings widerspiegelt; je kleiner
  577.                           desto aehnlicher; 0 bei identischen Strings;
  578.                           die Routine arbeitet case-sensitiv
  579.  
  580.         ===============================================================
  581.         StringToESC
  582.         ---------------------------------------------------------------
  583.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  584.  
  585.         ERSTDATUM    ...  24.10.1994    LETZTE AeNDERUNG ...
  586.  
  587.         MODIFIKATION ...
  588.         ---------------------------------------------------------------
  589.  
  590.         BESCHREIBUNG ...  Eine Zeichenkette die Steuerzeichen in
  591.                           'verschlüsselter' Form enthält, wird
  592.                           in eine Zeichenkette gewandelt in der die
  593.                           Steuerzeichen direkt enthalten sind.
  594.  
  595.  
  596.         DEKLARATION  ... Function  StringToESC (strName:String) : String;
  597.  
  598.         PARAMETER    ...  strName - der String der gewandelt werden soll
  599.  
  600.         ERGEBNIS     ...  ein String mit Steuerzeichen
  601.  
  602.         ===============================================================
  603.         StripLeadingSpaceTAB
  604.         ---------------------------------------------------------------
  605.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  606.  
  607.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  17.06.1994
  608.  
  609.         MODIFIKATION ...  Orazio Czerwenka
  610.         ---------------------------------------------------------------
  611.  
  612.         BESCHREIBUNG ...  enfernt fuehrende Leerzeichen und TABs aus ei-
  613.                           nem String
  614.  
  615.         USES         ...  RemoveLeft
  616.  
  617.         DEKLARATION  ...  function StripLeadingSpaceTAB
  618.                             (strName: String): String;
  619.  
  620.         PARAMETER    ...  strName - der zu bearbeitende String
  621.  
  622.  
  623.         ===============================================================
  624.         StripSpaceTAB
  625.         ---------------------------------------------------------------
  626.         ERSTAUTOR    ...  Peter Holschbach, 2:2450/660.3 @ FidoNet
  627.  
  628.         ERSTDATUM    ...  16.01.1994    LETZTE AeNDERUNG ...  17.06.1994
  629.  
  630.         MODIFIKATION ...  Orazio Czerwenka
  631.         ---------------------------------------------------------------
  632.  
  633.         BESCHREIBUNG ...  enfernt _alle_ Leerzeichen und TABs aus einem
  634.                           String
  635.  
  636.         USES         ...  RemoveLeft
  637.  
  638.         DEKLARATION  ...  function StripSpaceTAB(strName:String):String;
  639.  
  640.         PARAMETER    ...  strName - der zu bearbeitende String
  641.  
  642.  
  643.         ===============================================================
  644.         UpperString
  645.         ---------------------------------------------------------------
  646.         ERSTAUTOR    ...  Orazio Czerwenka, 2:2450/540.55 @ FidoNet
  647.  
  648.         ERSTDATUM    ...  ??.??.1992    LETZTE AeNDERUNG ...  21.12.1993
  649.         ---------------------------------------------------------------
  650.  
  651.         BESCHREIBUNG ...  konvertiert eine Variable des Typs STRING zu
  652.                           Grossschreibung (erlaubt auch die Uebergabe von
  653.                           Variablen des Typs CHAR)
  654.  
  655.         DEKLARATION  ...  function UpperString (strName:string):String
  656.  
  657.         PARAMETER    ...  strName - der zu konvertierende String
  658.  
  659.         ERGEBNIS     ...  eine Variable des Typs STRING, bestehend aus
  660.                           Grossbuchstaben
  661.  
  662.  
  663.         ===============================================================
  664.         WildMatch
  665.         ---------------------------------------------------------------
  666.         ERSTAUTOR    ...  Peter Schuette, 2:2450/117.19 @ FidoNet
  667.  
  668.         ERSTDATUM    ...  ??.??.19??    LETZTE AeNDERUNG ...  16.06.1994
  669.  
  670.         MODIFIKATION ...  Orazio Czerwenka
  671.         ---------------------------------------------------------------
  672.  
  673.         BESCHREIBUNG ...  ueberprueft, ob ein beliebige WildCards '?' und
  674.                           '*' enthaltender String mit einem als zweiter
  675.                           Parameter uebergebenem String uebereinstimmt
  676.  
  677.         DEKLARATION  ...  function WildMatch
  678.                             (Pattern,Source: String) : Boolean;
  679.  
  680.         PARAMETER    ...  Pattern - der WildCards enthaltende String
  681.                           Source  - der String in dem Pattern enthalten
  682.                                     sein soll
  683.  
  684.         ERGEBNIS     ...  TRUE  - wenn Pattern in Source enthalten
  685.                           FALSE - wenn Pattern nicht in Source
  686.  
  687. --- CrossPoint v3.02 R
  688.  * Origin: kann denn Pascal Suende dein ? (2:2450/540.150)
  689.  
  690. @PATH: 2450/540
  691.  
  692. ------------------------------------------------------------
  693. (5176)  Sun 3 Jul 94  0:00
  694. By: Peter Holschbach
  695. To: Alle
  696. Re: FSTR.DOK 1.05b Teil2 von 2
  697. St:
  698. ------------------------------------------------------------
  699. @MSGID: 2:2450/540.150 ae15ac9b
  700. @PID: XP 3.02 R/A6738
  701.      4. Beispiele:
  702.      -------------
  703.  
  704.         ===============================================================
  705.         CharListNoPos
  706.         ---------------------------------------------------------------
  707.  
  708.           CharListNoPos ('ab','bbabTest')
  709.                                    ^        {Ergebnis: 5 }
  710.  
  711.         ===============================================================
  712.         CharListPos
  713.         ---------------------------------------------------------------
  714.  
  715.           CharListPos ('ab','Test bacd')
  716.                                   ^         {Ergebnis: 6 }
  717.  
  718.         ===============================================================
  719.         EscToString
  720.         ---------------------------------------------------------------
  721.  
  722.           Zeile := #27'P^'
  723.           Writeln (EscToString (Zeile));
  724.                     { Ergebnis:  '^[P^^' }
  725.  
  726.         ===============================================================
  727.         EnsureBackslash
  728.         ---------------------------------------------------------------
  729.  
  730.  
  731.           Zeile := 'Pfadname';
  732.           Zeile1 := EnsureBackSlash (Zeile);
  733.           Zeile  := 'Pfadname\';
  734.           Zeile2 := EnsureBackSlash (Zeile);
  735.  
  736.           { Ergebnis: Zeile1 = 'Pfadname\'
  737.                       Zeile2 = 'Pfadname\'  }
  738.  
  739.         ===============================================================
  740.         EnsureNoBackslash
  741.         ---------------------------------------------------------------
  742.  
  743.           Zeile := 'PfadName\';
  744.           Zeile := EnsureBackSlash (Zeile);
  745.  
  746.           { Ergebnis : Zeile = 'PfadName'  }
  747.  
  748.  
  749.         ===============================================================
  750.         LastPos
  751.         ---------------------------------------------------------------
  752.  
  753.           LastPos('33','33333');
  754.                            ^^             { Ergebnis: 4 }
  755.  
  756.         ===============================================================
  757.         LowerString
  758.         ---------------------------------------------------------------
  759.  
  760.           wird analog zur Funktion 'UpperString' benutzt
  761.  
  762.         ===============================================================
  763.         MirrorString
  764.         ---------------------------------------------------------------
  765.  
  766.           MirrorString('Hello_World_!');  { Ergebnis: '!_dlroW_olleH' }
  767.  
  768.         ===============================================================
  769.         PartString
  770.         ---------------------------------------------------------------
  771.  
  772.           LineArray [0] := 'Hello World';  { vom Typ FieldOfStrings }
  773.           PartString (' ',LineArray);
  774.  
  775.           {Ergebnis:
  776.              LineArry  ->  'Hello World','Hello','World','',...
  777.              PartCount ->  2
  778.           }
  779.  
  780.           siehe auch PartStringByComma und PartString PartStringBySpaceTAB
  781.  
  782.         ===============================================================
  783.         PartStringByComma
  784.         ---------------------------------------------------------------
  785.  
  786.          LineArray [0] := 'Hello, World';   { vom Typ FieldOfStrings }
  787.          PartStringByComma (LineArray);
  788.  
  789.          {Ergebnis:
  790.             LineArry  -> 'Hello, World','Hello',' World','',...
  791.             PartCount -> 2
  792.           }
  793.           siehe auch PartStringBySpaceTAB
  794.  
  795.         ===============================================================
  796.         PartStringBySpaceTAB
  797.         ---------------------------------------------------------------
  798.  
  799.         LineArray [0] := 'Hello World';   { vom Typ FieldOfStrings }
  800.         PartStringBySpaceTAB (LineArray);
  801.  
  802.          {Ergebnis:
  803.             LineArry  -> 'Hello World','Hello','World','',.....
  804.             PartCount -> 2
  805.           }
  806.  
  807.         Hier in Kurzform einige Testzeilen:
  808.  
  809.         LineArray [0]        PartCount       LineArray [1]....
  810.         ''             ->       0              ''
  811.         'a b c'        ->       3              'a','b','c'
  812.         'a "b c"'      ->       2              'a','b c'
  813.         '"a b c'       ->       1              'a b c'
  814.  
  815.         ===============================================================
  816.         PosCount
  817.         ---------------------------------------------------------------
  818.  
  819.           1. PosCount('l','Hallo');
  820.                              ^^
  821.              { Ergebnis: 2 }
  822.  
  823.           2. PosCount('33','333');
  824.                             ^^            { Ergebnis: 1 }
  825.                               ^...
  826.  
  827.         ===============================================================
  828.         PosX
  829.         ---------------------------------------------------------------
  830.  
  831.           Writeln (PosX (2,'ab','abcabdabc');
  832.                                     ^^         {Ergebnis: 4 }
  833.         ===============================================================
  834.         RedPosCount
  835.         ---------------------------------------------------------------
  836.  
  837.           RedPosCount('33','333');
  838.                             ^^            { Ergebnis: 2 }
  839.                              ^^
  840.         ===============================================================
  841.         RemoveAll
  842.         ---------------------------------------------------------------
  843.  
  844.           Writeln (RemoveAll ('acxb','Faxibdxao'));
  845.                                        ^^ ^ ^^   { Ergebnis: 'Fido' }
  846.  
  847.         ===============================================================
  848.         RemoveLeft
  849.         ---------------------------------------------------------------
  850.  
  851.           Writeln (RemoveLeft ('abc','cbaFido'));
  852.                                       ^^^         { Ergebnis: 'Fido' }
  853.  
  854.         ===============================================================
  855.         RemoveLeftRight
  856.         ---------------------------------------------------------------
  857.  
  858.            Writeln (RemoveLeftRight ('abc','cbaFidoabc'));
  859.                                             ^^^    ^^^
  860.                                                    { Ergebnis: 'Fido' }
  861.  
  862.         ===============================================================
  863.         RemoveRight
  864.         ---------------------------------------------------------------
  865.  
  866.            Writeln (RemoveRight ('cba','Fidoabc'));
  867.                                             ^^^
  868.                                                    { Ergebnis: 'Fido' }
  869.  
  870.         ===============================================================
  871.         Resemble
  872.         ---------------------------------------------------------------
  873.  
  874.           Writeln (Resemble('Fido','Fodi')); { Ergebenis: 2 }
  875.           Writeln (Resemble('Fido','Fodo')); { Ergebenis: 1 }
  876.  
  877.         ===============================================================
  878.         StringToESC
  879.         ---------------------------------------------------------------
  880.  
  881.           Zeile := '^[P^^';
  882.           Zeile2 := EscToString (Zeile));
  883.                     { Ergebnis:  Zeile2 = #27'P^' }
  884.  
  885.         ===============================================================
  886.         StripLeadingSpaceTAB
  887.         ---------------------------------------------------------------
  888.  
  889.           Writeln (StripLeadingSpaceTAB ('  Hello '));
  890.                                          ^^^    { Ergebnis : 'Hello ' }
  891.  
  892.         ===============================================================
  893.         StripSpaceTAB
  894.         ---------------------------------------------------------------
  895.  
  896.           Writeln (StripSpaceTAB ('  Hello '));
  897.                                    ^^     ^   { Ergebnis: 'Hello' }
  898.  
  899.         ===============================================================
  900.         UpperString
  901.         ---------------------------------------------------------------
  902.  
  903.           Uebergabe von Variablen des Typs CHAR:
  904.           -------------------------------------
  905.             var
  906.               str1 : string[1];
  907.               ch   : char;
  908.             begin
  909.               str1:= UpperString('a');
  910.               ch:= str1[1];
  911.               writeln(ch);
  912.             end.                          { Ergebnis: 'A' }
  913.  
  914.  
  915.           Uebergabe von Variablen des Typs STRING:
  916.           ---------------------------------------
  917.             writeln(UpperString('ab');    { Ergebnis: 'AB' }
  918.  
  919.         ===============================================================
  920.         WildMatch
  921.         ---------------------------------------------------------------
  922.  
  923.         Writeln (WildMatch ('?cd?','bcde')) { Ergebnis: TRUE }
  924.         Writeln (WildMatch ('*cd?','abcde')) { Ergebnis: TRUE }
  925.         Writeln (WildMatch ('*Fido','look a Fido')) { Ergebnis: TRUE }
  926.  
  927.         ---------------------------------------------------------------
  928.  
  929.       5. History:
  930.       -----------
  931.         Neuerungen nach Release ...
  932.         ---------------------------
  933.         ... 1.02 - PosX                 - liefert die Position des Xten
  934.                                           Vorkommens  eines  Substrings
  935.                                           innerhalb eines  Strings  als
  936.                                           Byte zurueck
  937.         ... 1.03 - CharListPos          - liefert    die   Position des
  938.                                           ersten  Vorkommens  eines, in
  939.                                           einer als  String uebergebenen
  940.                                           Liste  enthaltenen  Chars  in
  941.                                           einem String als Word zurueck
  942.                    CharListNoPos        - liefert  die   Position   des
  943.                                           ersten Vorkommens  eines,  in
  944.                                           einer als String  uebergebenen
  945.                                           Liste   _nicht_   enthaltenen
  946.                                           Chars  in  einem  String  als
  947.                                           Word zurueck
  948.                    EnsureBackslash      - stellt sicher, dass ein String
  949.                                           mit einem '\' endet
  950.                    EnsureNoBackslash    - stellt sicher, dass ein String
  951.                                           _nicht_ mit einem '\' endet
  952.                    FieldOfStrings       - Typendefinition    fuer    den
  953.                                           internen Gebrauch
  954.                    PartString           - teilt einen String, ausgehend
  955.                                           von   einer     als    String
  956.                                           uebergebenen Liste von Trenn-
  957.                                           zeichen, in Teilstrings auf
  958.                    PartStringByComma    - teilt einen String, ausgehend
  959.                                           von dem Trennzeichen ',',  in
  960.                                           Teilstrings auf
  961.                    PartStringBySpaceTAB - teilt einen String, ausgehend
  962.                                           von den Trennzeichen ' '  und
  963.                                           #9, in Teilstrings auf
  964.                    RemoveAll            - entfernt   alle    in   einer
  965.                                           uebergebenen Liste enthaltenen
  966.                                           Chars   komplett   aus  einem
  967.                                           String
  968.                    RemoveLeft           - entfernt   alle    in   einer
  969.                                           uebergebenen Liste enthaltenen
  970.                                           Chars links aus einem String
  971.                    RemoveLeftRight      - entfernt   alle    in   einer
  972.                                           uebergebenen Liste enthaltenen
  973.                                           Chars  links _und_ rechts aus
  974.                                           einem String
  975.                    RemoveRight          - entfernt   alle    in   einer
  976.                                           uebergebenen Liste enthaltenen
  977.                                           Chars rechts aus einem String
  978.                    Resemble             - liefert  einen  Wert  zurueck,
  979.                                           der  angibt,  wie  sehr  sich
  980.                                           zwei Strings aehneln
  981.                    StripLeadingSpaceTAB - entfernt alle fuehrenden Leer-
  982.                                           zeichen und  TABs  aus  einem
  983.                                           String
  984.                    StripSpaceTAB        - entfernt  _alle_  Leerzeichen
  985.                                           und TABs aus einem String
  986.                    WildMatch            - ueberprueft, ob  ein  beliebige
  987.                                           WildCards '?'   und '*'  ent-
  988.                                           haltender  String  mit  einem
  989.                                           als zweiter Parameter ueberge-
  990.                                           benem String uebereinstimmt
  991.  
  992.         ... 1.05 - PartString           - behandelt alle Zeichen die von
  993.                                           "" umschlossen sind als eine
  994.                                           Teilzeichenkette.
  995.                                         - Die Variable PartCount ist global
  996.         ... 1.06 - Partstring           - Probleme bei Zeilenlängen von
  997.                                           34 Zeichen behoben.
  998.   ==========================================================================
  999.  
  1000.                   /////////////////////\\\\\\\\\\\\\\\\\\\\\\\
  1001.                    Ende der Dokumentation zur FIDO Unit FSTR
  1002.                   \\\\\\\\\\\\\\\\\\\\\///////////////////////
  1003.